昨天做了能讓我展示作品的網頁,我就以此開始花時間思考,要做什麼遊戲來展示會比較好。
最後想到可以嘗試製作一些經典的簡易遊戲,除了能當作這次鐵人賽的作品,也有機會讓大家直接遊玩。因此目前規劃製作 2~3 款簡單的小遊戲,之後再視實際完成的情況,決定以網頁遊戲或其他形式放到第三天設計的網頁上。
但是這個人過去只做過2D平台橫向捲軸遊戲,像馬力歐兄弟這類型的遊戲對我來說比較熟悉,因此這次反而想嘗試不同類型的 2D 遊戲,素材也比較容易在網路上找的那一種。
思考了一段時間後,最後我想到的就是「Flappy Bird」,它同樣屬於橫向捲軸遊戲,但玩法和我過去製作的遊戲不同,並不是讓角色在場景中自由移動,而是透過點擊控制角色上下移動。一方面能學習不同的遊戲製作方式,另一方面也算是給自己的挑戰。
這個人平時也有一些課業,所以進度不會那麼快,今天目標就定在設計出鳥移動的程式。
第一步先在 Unity 建立小鳥,並加入 Rigidbody2D,讓小鳥可以受到重力影響。
接著請 Gemini 協助我製作控制小鳥的 C# 程式,這次主要希望做到幾個功能:
using UnityEngine;
public class BirdController : MonoBehaviour
{
[Header("物理與跳躍設定")]
[Tooltip("跳躍力道")]
public float jumpForce = 6f;
[Tooltip("重力大小(預設 2.5,數值越大掉落越快)")]
public float gravityScale = 2.5f;
private Rigidbody2D rb;
private bool isDead = false;
void Start()
{
// 取得小鳥身上的 Rigidbody2D 元件
rb = GetComponent<Rigidbody2D>();
// 透過程式碼直接寫死重力數值,確保小鳥會受重力影響自然下墜
if (rb != null)
{
rb.gravityScale = gravityScale;
}
}
void Update()
{
// 死亡後停止接收輸入
if (isDead) return;
// 檢測電腦輸入:按下空白鍵 或 滑鼠左鍵點擊
bool isComputerInput = Input.GetKeyDown(KeyCode.Space) || Input.GetMouseButtonDown(0);
// 檢測手機觸控:手指接觸螢幕的第一瞬間
bool isMobileInput = Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began;
// 只要觸發任一輸入,就執行跳躍
if (isComputerInput || isMobileInput)
{
Jump();
}
}
void Jump()
{
// 將 Y 軸速度重置並賦予向上推力,讓連續點擊時手感一致
rb.velocity = new Vector2(rb.velocity.x, jumpForce);
}
private void OnCollisionEnter2D(Collision2D collision)
{
// 碰撞到水管或地面時觸發死亡
if (collision.gameObject.CompareTag("Pipe") || collision.gameObject.CompareTag("Ground"))
{
Die();
}
}
void Die()
{
isDead = true;
Debug.Log("小鳥撞到了!遊戲結束。");
}
}
這次和前幾天製作網頁時一樣,並不是完全自己從零開始寫程式,而是先把想完成的功能告訴 Gemini,再讓它協助產生程式碼。協助產生的程式碼包含重力和新增偵測手機操控的功能。
拿到程式碼後,我再放進 Unity 中測試,確認小鳥能不能正常受到重力影響,以及按下按鍵後能不能按照預期跳躍。
目前小鳥已經可以完成最基本的飛行控制,代表遊戲的第一步已經完成。
今天只先處理小鳥的控制,明天則預計加入水管的移動,讓遊戲開始有基本的閃避玩法,之後會再慢慢加入其他功能。
目前也有一些想法,例如將原本的上下水管改成兩種不同的障礙物,讓障礙物各自生成,並加入可以在場上收集的道具。
其中一種想法是加入玉米或彩色羽毛,收集 3 個後可以使用技能,例如短時間加速並暫時無視障礙物;另外也可以加入隱形道具,取得後能在短時間內隱形。
這些內容目前都還只是構想,會等基本玩法完成後,再一步一步加入。
今天沒有急著完成整個遊戲,而是先從最基本的小鳥控制開始。
雖然目前看起來只有讓小鳥「往上跳」和「往下掉」這麼簡單,但對我來說,這是第一次嘗試使用 AI 協助自己製作 C# 遊戲。
過去製作遊戲時,大多是將教授教的程式進行修改,很少實際使用 AI 協助開發。因此也想藉著這次機會,嘗試讓 Gemini 參與遊戲製作的過程。
接下來會每天一步一步進行開發,先從簡易的小遊戲開始,看看最後能做到什麼程度。